圖片來源:(https://shingekinokyojin.fandom.com/zh/wiki/%E6%A0%BC%E9%81%94%C2%B7%E4%BF%AE%E8%8C%B2)
圖片來源:(https://steam.oxxostudio.tw/category/python/example/matplotlib.html)
Python一個強大繪圖庫,能夠生成多種靜態、動畫圖表,並且可以將圖表嵌入到使用通用 GUI 工具包(Tkinter、 wxPython、Qt、GTK)應用程式中。提供一個類似 MATLAB 接口,方便使用者快速繪製出各種專業級的圖形
使用 pip 安裝
pip install matplotlib
使用 Anaconda 安裝
如果使用 Anaconda 或 Miniconda,可以直接在 Anaconda Prompt 中執行
conda install -c conda-forge matplotlib
圖形整體風格
風格套用
:Matplotlib提供多種預設的風格,快速改變圖形的整體樣式import matplotlib.pyplot as plt
plt.style.use('ggplot') # 套用 ggplot 風格
圖形元素設定
標題
、 軸標籤
plt.title('我的圖形標題', fontsize=20, fontweight='bold')
plt.xlabel('X軸標籤')
plt.ylabel('Y軸標籤')
刻度
plt.xticks(ticks=[1, 2, 3, 4], labels=['A', 'B', 'C', 'D'])
plt.yticks(np.arange(0, 11, 2))
網格線
plt.grid(True)
圖例
plt.plot(x, y, label='線性')
plt.legend()
顏色
、 線型
、 標記
plt.plot(x, y, color='red', linestyle='--', marker='o')
軸範圍
plt.xlim(0, 10)
plt.ylim(-1, 1)
建立子圖
plt.subplot(2, 2, 1) # 分割成 2x2 的子圖,選擇第一個
調整子圖間距
plt.subplots_adjust(hspace=0.3, wspace=0.2)
其他常見設定
圖形大小
plt.figure(figsize=(8, 6))
背景顏色
plt.figure(facecolor='lightgray')
保存圖形
plt.savefig('my_plot.png', dpi=300)
import matplotlib.pyplot as plt
import numpy as np
# 創建隨機數據
x = np.random.rand(100)
y = np.random.rand(100)
# 繪製散佈圖
plt.scatter(x, y, s=50, c='blue', marker='^', alpha=0.7)
# 設定圖形標題和軸標籤
plt.title('隨機散佈圖', fontsize=16)
plt.xlabel('X軸')
plt.ylabel('Y軸')
# 設定網格線
plt.grid(True, linestyle='--', alpha=0.5)
# 設定圖形大小和背景顏色
plt.figure(figsize=(8, 6), facecolor='lightgray')
# 顯示圖形
plt.show()
基本圖形
折線圖 (Line Plot)
顯示數據隨時間或類別的變化趨勢
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
散佈圖(Scatter Plot)
顯示兩個變數之間的關係
plt.scatter(x, y)
plt.show()
常用圖形
柱狀圖(Bar Chart)
比較不同類別的數值大小
plt.bar(['A', 'B', 'C'], [3, 8, 1])
plt.show()
直方圖(Histogram)
顯示數據的分佈情況
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.show()
餅圖(Pie Chart)
顯示部分佔整體比例
plt.pie([25, 25, 50])
plt.show()
箱型圖(Box Plot)
顯示一組數據的分佈情況,包括中位數、四分位數、異常值
plt.boxplot(data)
plt.show()
進階圖形
等高線圖(Contour Plot)
顯示三維數據在二維平面上投影
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 256)
y = np.linspace(-3, 3, 256)
X, Y = np.meshgrid(x, y)
Z = np.sin(X**2 + Y**2)
plt.contour(X, Y, Z)
plt.show()
熱圖(Heatmap)
顯示二維數據的數值大小,通常用顏色表示
import seaborn as sns # Seaborn 是建立在 Matplotlib 上的視覺化庫,提供更豐富的圖形
sns.heatmap(data)
plt.show()
3D圖形
Matplotlib也能繪製簡單3D圖形
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ... 繪製 3D 圖形
plt.show()
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 尋找系統中可用的中文字體
font_properties = fm.FontProperties(fname="C:/Windows/Fonts/simhei.ttf") # 替換為你的字體路徑
# 繪製簡單的線性圖
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X軸', fontproperties=font_properties)
plt.ylabel('Y軸', fontproperties=font_properties)
plt.title('簡單線性圖', fontproperties=font_properties)
plt.show()
程式碼說明
導入模組
matplotlib.pyplot
:提供繪圖功能matplotlib.font_manager
:用於管理字體尋找字體
fm.FontProperties
:創建字體屬性對象fname
:指定字體文件路徑繪製圖形
plt.plot(x, y)
:繪製線性圖設置標籤和標題
xlabel, ylabel, title
:設置各個軸的標籤和圖表的標題fontproperties
: 將字體屬性應用於文本字體管理
:可以使用 font_manager
模組查詢系統中所有可用字體,並根據需要進行選擇Matplotlib 是一個功能強大的 Python 繪圖庫,能夠生成美觀且具有資訊性的圖表。透過正確設定字體,可以輕鬆地在圖表中顯示中文。希望介紹能幫助快速上手 Matplotlib,並製作出精美的中文圖表